package com.qjc.demo.algorithm.删除数组重复元素;

/**
 * @ClassName: SortedArrayDuplicates
 * @Description: 删除有序数组中的重复项，并返回新数组的长度（注意不用返回数组，且不能开辟额外空间）
 * @Author: qjc
 * @Date: 2022/5/5 12:35 PM
 */
public class SortedArrayDuplicates {

    // 使用双指针，i指向一个元素，j指向i的后一个额元素，j比i快
    public static int delDuplicates(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        int i = 0;
        for (int j = 1; j < nums.length; j++) {
            // j指针是一直往后移的
            if (nums[i] != nums[j]) {
                // 如果不相等，则i指针后移，相等的话，i不动
                i++;
                nums[i] = nums[j];
            }
        }
        return i + 1;// 因为i是下标，从0开始的，所以返回数组个数的时候要+1
    }

    public static void main(String[] args) {
        System.out.println(delDuplicates(new int[]{0, 1, 2, 2, 3, 3, 4, 4, 5}));
    }
}
